#include "../libraries/Equipo/jugador.h"
#include "../libraries/threads/Thread.h"



//los cout estan por triplicado por que asi el programa va mas fluido(no se porque)




    void* recibir(void* param)
    {
        Jugador* albiol= (Jugador*)param;// creamos un puntero a jugador y lo igualamos al que le pasamos
        while (true)
        {
            albiol->guardar();      //funcion que almacena los datos del server
        }
    }
    void* enviar(void* param)
    {
        Jugador* albiol= (Jugador*)param;
        albiol->mover(-50,0);           //posicion inicial
        albiol->jugarPortero();


    }

//declaramos los mutex
pthread_mutex_t nl = PTHREAD_MUTEX_INITIALIZER;
pthread_mutex_t est = PTHREAD_MUTEX_INITIALIZER;
pthread_mutex_t vis = PTHREAD_MUTEX_INITIALIZER;
pthread_mutex_t vel = PTHREAD_MUTEX_INITIALIZER;
pthread_mutex_t cic = PTHREAD_MUTEX_INITIALIZER;
pthread_cond_t envio = PTHREAD_COND_INITIALIZER;
pthread_mutex_t ang = PTHREAD_MUTEX_INITIALIZER;
pthread_cond_t vista_nueva = PTHREAD_COND_INITIALIZER;



int main()
{

    Jugador albiol(&nl,&vis,&vista_nueva,&est,&vel,&cic,&envio,&ang);    //creamos un jugador y lo conectamos
    albiol.conectar(6000,"127.0.0.1",1);
    albiol.guardar();//La primera vez, llamamos a guardar desde aqui para asegurarnos de coger la primera cadena del server
    cout<<"conectado bien"<<endl;





    //creamos los treads. Los join evitan que el programa termine.
    pthread_t entradas;
    pthread_t salidas;
    pthread_create(&entradas,NULL,&recibir,&albiol);
    pthread_create(&salidas,NULL,&enviar,&albiol);




    pthread_join(entradas,NULL);
    pthread_join(salidas,NULL);





    while(1){}





    return 0;
}

